<!doctype html>
<!--
Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
Code distributed by Google as part of the polymer project is also
subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
-->
<html>
<head>
  <meta charset="UTF-8">
  <title>core-selector-content</title>
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">

  <script src="../../webcomponentsjs/webcomponents.js"></script>
  <script src="../../web-component-tester/browser.js"></script>

  <link rel="import" href="../core-selector.html">

  <style>
    .core-selected {
      background: #ccc;
    }
  </style>

</head>
<body>

  <polymer-element name="test-core-selector" noscript attributes="selected">
    <template>
      <core-selector id="selector" selected="{{selected}}" valueattr="id">
        <content></content>
      </core-selector>
    </template>
  </polymer-element>

  <test-core-selector selected="item0">
    <div id="item0">item0</div>
    <div id="item1">item1</div>
    <div id="item2">item2</div>
    <div id="item3">item3</div>
  </test-core-selector>

  <script>
  
    var s = document.querySelector('test-core-selector');

    suite('content', function() {
      
      test('get selected', function(done) {
        asyncPlatformFlush(function() {
          // check selected class
          assert.isTrue(s.children[0].classList.contains('core-selected'));
          done();
        });
      });

      test('set selected', function(done) {
        // set selected
        s.selected = 'item1';
        asyncPlatformFlush(function() {
          // check selected class
          assert.isTrue(s.children[1].classList.contains('core-selected'));
          done();
        });
      });
      
      test('get items', function() {
        assert.equal(s.$.selector.items.length, s.children.length);
      });
      
      test('activate event', function(done) {
        s.children[2].dispatchEvent(new CustomEvent('tap', {bubbles: true}));
        asyncPlatformFlush(function() {
          // check selected class
          assert.isTrue(s.children[2].classList.contains('core-selected'));
          done();
        });
      });
      
      test('add item dynamically', function(done) {
        var item = document.createElement('div');
        item.id = 'item4';
        item.textContent = 'item4';
        s.appendChild(item);
        // set selected
        s.selected = 'item4';
        asyncPlatformFlush(function() {
          // check selected class
          assert.isTrue(s.children[4].classList.contains('core-selected'));
          done();
        });
      });

    });

  </script>

</body>
</html>
